package project;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class UsuárioTest {
	
	private Usuário user;
	
	@Before
	public void criaUsuário() {
		user = new Usuário();
	}
	
	@Test
	public void testGetAndSetNome() {
		
		//Inicialmente, o usuário possui um nome vazio
		Assert.assertEquals("", user.getNome());
		
		//O nome é alterado e verifica-se se a alteração foi, de fato, realizada
		user.setNome("Dugas");
		Assert.assertEquals("Dugas", user.getNome());
		
		//Tenta alterar o nome do usuário para um nome inválido e verifica se a
		//exceção lançada está correta.
		
		try {
			user.setNome("abc123");
		} catch (Exception e) {
			Assert.assertEquals("Um nome não deve conter números ou caracteres especiais.", e.getMessage());
		}
		
		try {
			user.setNome("\\o/");
		} catch (Exception e) {
			Assert.assertEquals("Um nome não deve conter números ou caracteres especiais.", e.getMessage());
		}
		
	}
	
	@Test
	public void testGetAndSetEmail() {
		Assert.assertEquals("", user.getEmail());
		user.setEmail("bobinho@gmail.com");
		Assert.assertEquals("bobinho@gmail.com", user.getEmail());
		
		//um e-mail deve conter, pelo menos, um caractere '@' e um '.' para ser válido
		
		try {
			user.setEmail("abc@gmail");
		} catch (Exception e) {
			Assert.assertEquals("E-mail inválido.", e.getMessage());
		}
		
		try {
			user.setEmail("abc.com.br");
		} catch (Exception e) {
			Assert.assertEquals("E-mail inválido.", e.getMessage());
		}
		
	}
	
	@Test
	public void testGetAndSetDescrição() {
		Assert.assertEquals("", user.getDescrição());
		user.setDescrição("Sou um usuário feliz \\o/");
		Assert.assertEquals("Sou um usuário feliz \\o/", user.getDescrição());
	}
	
	

}